package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import jdk.nashorn.internal.ir.Flags;

public class StudentService {
    private StudentDao dao = new StudentDao();

    public boolean addStudent(Student stu) {
        //1.创建StudentDao(库管)对象

        //2.将学生对象,传递给StudentDao库管中的 addStudent方法
        //3.将返回的boolean类型结果,返还给StudentController
        return dao.addStudent(stu);
    }

    //业务员中的判断是否存在功能
    public boolean isExists(String id) {
        //1.拿到系统中已有的所有学号信息
        //1.1指挥库管将系统中所有学生信息查找出来

        Student[] allStudents = dao.findAllStudents();
        //2.拿到校验的id去已有的学号中遍历查找
        //2.1先假设要查找的id不存在
        boolean flag = false;

        //2.2遍历所有学生信息
        for (int i = 0; i < allStudents.length; i++) {
            //2.3拿到每一个学生对象的学号
            Student stu = allStudents[i];
            //2.4 当前索引位置的学生不为null,并且该学生的学号和要查找的学号
            if (stu != null && stu.getId().equals(id)) {
                flag = true;
            }
        }

        return flag;
    }

    //业务员中的查找所有学生功能
    public Student[] findAllStudents() {
        //1.指挥库管拿到所有学生信息
        Student[] allStudents = dao.findAllStudents();
        //2.对库管返回的学生数组进行数据分析处理:
        //2.1 如果库管返回的数组中全是null,当前方法直接返回null
        //2.2 只要库管给我的数组中有一个学生信息,当前方法返回整个库管传过来的学生数组
        //先假设查到的数组allStudents里面全是null --假设一个学生都没有
        boolean flag = false;
        //遍历allStudents
        for (int i = 0; i < allStudents.length; i++) {
            //拿到每一个索引位置的元素进行判断
            if (allStudents[i] != null) {
                //只要有一个位置不为null,说明有学生,修改标记位为true
                flag = true;
                break;
            }
        }
        //根据flag的值来决定本次方法的返回值
        if (flag) {
            //有学生,返回allStudents
            return allStudents;
        } else {
            return null;
        }
    }

    public void deleteStudentById(String delId) {
        dao.deleteStudentById(delId);
    }

    public void updateStudentById(String updateId,Student newStu) {
        dao.updateStudentById(updateId,newStu);


    }

}
